iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
自我挑戰組

學習C#續系列 第 26 篇

Day 26: 物件導向設計原則(SOLID)與控制台架構思維

  • 分享至 

  • xImage
  •  

單一職責原則(Single Responsibility Principle, SRP):

  • 「一個類別應該只有一個引起它改變的原因。」
  • 避免寫出「萬能類別(God Class)」,例如一個類別同時負責終端機畫面呈現、商業計算邏輯與儲存至檔案。
  • 控制台分工思維:UI 呈現(輸入/輸出)、核心業務邏輯(Service)、資料存取(Repository)應拆分為獨立類別。

介面隔離原則(Interface Segregation Principle, ISP):

  • 「用戶端不應該被迫依賴它不需要的介面。」
  • 應設計「細緻、專注」的小介面,而非將讀取、寫入、發送郵件、匯出報表全部塞入同一個龐大介面。
  • 例如拆分為 IReader 與 IWriter,而非強迫只需要讀取功能的元件實作整個包含新增與刪除的介面。

依賴反轉原則(Dependency Inversion Principle, DIP):

  • 「高階模組不應依賴於低階模組,兩者都應該依賴於抽象(介面);抽象不應依賴於細節,細節應依賴於抽象。」
  • 商業邏輯不要直接 new FileStorage() 或 new SqliteStorage(),而是依賴 ITaskStorage 介面。如此一來,未來抽換底層儲存機制時,核心邏輯一行都不必修改。

簡單工廠模式(Simple Factory Pattern):

  • 由一個專門的工廠類別封裝物件建立邏輯,外部呼叫端只需給定條件(如型別字串或列舉),即可取得對應的介面實體。
  • 避免外部業務程式碼充斥繁雜的 new 實體化步驟,提升物件建立的集中管理性。

實作範例(以控制台待辦通知系統為例,實作 SRP、ISP、DIP 與簡單工廠模式)
https://ithelp.ithome.com.tw/upload/images/20261009/201789255sRDK8zrOt.png

https://ithelp.ithome.com.tw/upload/images/20261009/201789250wi3EQJdDm.png

https://ithelp.ithome.com.tw/upload/images/20261009/20178925IgznNBx91Z.png

https://ithelp.ithome.com.tw/upload/images/20261009/20178925ECQYuGkHMI.png

https://ithelp.ithome.com.tw/upload/images/20261009/2017892512nNQZDhQN.png


上一篇
Day 25: 控制台輕量資料庫:SQLite 與 EF Core
下一篇
Day 27: 單元測試實戰(Unit Testing)
系列文
學習C#續 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言